Advanced information storage technologies have made it possible and affordable for computer users to carry large amounts of digital information in physically small storage devices. Such portable devices can store amounts of information in excess of forty gigabytes in portable devices small enough to fit in a user's shirt pocket.
Today's laptop computers give users two highly desirable features. One is the ability to suspend a computing session (e.g., running applications, open windows) and resume it later, perhaps at a different location. The other is access to their personal and familiar software environment (e.g., applications, files, preferences) wherever they are. In spite of this convenience, a major drawback of this model is that the user has to carry a laptop, which is a fairly bulky device. In addition, though docking stations allow the user to use a larger display and attach some peripherals, the user is limited to the capabilities of the hardware integrated in the portable computer, such as the processor and memory.
Before the advent of portable computers, there were two main approaches to suspending a session in one location and resuming it at another. One method was based on process migration between the machines at the two locations. Another technique was to move just the user interface and graphical windows across stationary machines while continuing to run the application processes on a single machine. There are several solutions that store the user's data on a central server to make it possible for a user to log in to one of several machines that are connected to the server and have a common startup environment.
More recent solutions to this problem have centered on the use of virtual machines. For example, in Internet Suspend/Resume (ISR) the user's computation state is stored as a check-pointed virtual machine image in the network when computation is suspended, and retrieved from the network when computation is resumed at a machine that has similar base software. ISR has since explored using a portable device as a cache.
Another trend is the availability of ubiquitous computing devices available to users. Many users would benefit from this ubiquitous computing environment if they could carry their personal computing environment with them. The portable device (PD) discussed in U.S. patent application, Ser. No. 10/795,153 (herein incorporated by reference), allows any user to use any remote computer as if it were his or her own computer and when the user finishes working on that host computer the portable device saves the state of the computing environment. However, one current limitation of that device is that the user's portable device may not have some of the specific device drivers for devices in the host computer and may have to revert instead to generic drivers that may limit the function or performance of the host peripherals. Users of such PD's may find desirable the use of public personal computers such as those in cybercafes as hosts for the PD. However, those users may not trust the computers available at cybercafés because they may be infected with Trojan Horses or viruses that can hijack a user's email password and otherwise provide a non-secure, non-trusted environment. The PD helps address this situation by booting the cybercafé PC using software that the user trusts and controls, but as mentioned above, the PD may not be appropriately configured with the relevant device drivers for the cybercafé PC. Moreover, before a user can use a cybercafé computer to access the Internet, the cybercafé administrator may charge the user and require a payment method. These difficulties also impact the ability to download desired device drivers because of security concerns.
Prior art includes the provisioning of updates to the software stored on computers, including device drivers from remote servers. However, the computer whose software is updated usually has adequate software to be operable so that the computer can connect to the remote provisioning server and also provide enough of a user interaction capability so that the user can interactively control the software update process. Prior art thus waits for the booting sequence to complete, before fetching drivers from remote servers. In our situation we may come across a host system for which we do not have drivers for the installed hardware and may be unable to boot it up to a stage where we can connect to a remote provisioning server and download the drivers. In such cases the local zone provisioning server could be in the local network. To connect to a remote provisioning server we may need to authenticate with the firewall 110 and perhaps provide a payment that will require the host system to be fully booted to a point where the user can enter a payment credential such as a credit card on the host system or some other form of payment accepted in the local zone that will authenticate the host processing system with the firewall. The described method allows the PD to transparently download the drivers from the local zone provisioning server so that the PD is usable even with host systems for which it does not have any device drivers except for the network driver.
Therefore, there is a need for a method and system that provides a user with a means to carry his or her personal computing environment and work in progress (i.e., open windows and partially edited documents) and use that environment in several computers at different locations that overcomes the above shortcoming.